Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~
本篇是 建構安全軟體開發 系列文的 EP04。
先繼續延續前一篇的 EP03 從大眾比較熟知的 macOS 或是 Windows 的作業系統來舉例討論。
在 macOS 就有系統內建的 "系統監視程式"; Windows 就有系統內建的 "事件紀錄器" 的日誌功能。
當在遇到一般使用者操作電腦遇到問題的時候,可能常常描述的很模糊或者是說不上來。但由於有這個作業系統的 日誌紀錄 ,雖然對一般使用者來說多數是不會看也看不懂的,卻可以透過此系統日誌紀錄的查詢來協助,再根據遇到問題的使用者描述情況,大致上找到問題的癥結點,進而協助解決所遭遇的問題。
例如自己的親友所用的這台 Windows 電腦,常常發現使用一陣子後會檔案讀寫的 I/O 整個卡住不動,Windows 的檔案總管也常常發生無回應現象,然後就 Windows 當機了。
問了半天就只會說電腦會常常突然當機,但實際幫忙測試時都沒操作上的問題,最後透過檢視此台電腦的 Windows 事件紀錄器,發現有常常記錄到磁碟控制器的錯誤。
詢問狀況後,推論問題應是出在外接硬碟的外接盒上,因為此硬碟的外接盒至少用了 4 年以上但硬碟才換新的沒多久。猜測應是外接盒的控制器老化耗損,進而造成硬碟常常讀取/寫入失敗,果然換了一個新的硬碟外接盒之後就不常發生此現象了。
過一陣子再查看,相關的 disk 錯誤都在 7 天之前了:
那說到這邊,各位是否能想想看,作業系統就內建的這日誌紀錄的功能,當中有達成 "C.I.A Triad" 或 "3A. 原則" 當中的那些概念?
先以近年來資訊/開發人員比較熟知的 Git 技術來舉例好了。
近年來最受資訊/開發人員主流使用的版控技術應該非 git 莫屬了吧?
甚至網路上都出現了 git 的迷因梗圖:
如果發生緊急災害(迷因梗圖是火災)的時候,趕緊把目前開發的程式碼專案 commit 到 branch 當中,並且 push 到遠端的 repository 當中存放,然後再離開公司所在的大樓去避難。
所以,只要是資訊/開發人員看到這個迷因梗,鐵定都會心一笑...???
而由於可使用 git 進行版控存放的公有雲託管服務太多了,隨便舉就有 GitHub、GitLab、Bitbucket、Azure Repos、Coding...等,更別說公司自己內部就有建置 git server 來作為程式碼存放的。
使用 Git 版控對現在的資訊/開發人員來說,已經是技能樹 (skilltree) 當中必點之一的技能了。
"甚至是各位正在觀看的這系列文,在撰寫時也都直接用 git 進行版控,並且上到 Github 進行存放。"
(雖然這麼做不一定有其必要性?)
由於 git 從被設計出來至今為止,都一直保有著以下幾點優秀的特性(此 git 官網文件說明所列):
所以,一個程式開發專案無論是由一個開發人員進行開發,或是由成千上百個開發人員同時進行開發,當使用了git 來進行版控與分支處理後,要將這些開發者當中的任何人,其所增改的程式碼進行整合(或稱分支的合併),來產出專案程式的應用交付,不再是難事。
取自 使用 Git 的分支與合併基本用法 之圖表 25
而整個開發團隊,有去做好適當的規劃,來進行 git 分支的程式碼管控時,就能對所產出交付的程式碼專案,達到有效率的進程掌控。
取自 使用 Git 的分支進行工作流程 之圖表 27
說到這邊,各位是否能想想看,當使用 Git 對開發專案程式碼進行版控與共同協作時,當中有達成前述所提到的 "C.I.A Triad" 或 "3A. 原則" 當中的那些概念?
Pro Git eBook (Git 官方教學文件):
https://git-scm.com/book/zh-tw/v2
透過 Git 指令撰寫,直接產生圖像化的分支與狀態:
https://learngitbranching.js.org/?locale=zh_TW